import javax.swing.tree.TreeNode;

/*
 * @lc app=leetcode.cn id=530 lang=java
 *
 * [530] 二叉搜索树的最小绝对差
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    // 这个显然是中序遍历，每次更新记录最小差值即可，递归
    // 要记录最小的差，需记录前一个值
    TreeNode preNode = null;
    int ans=Integer.MAX_VALUE;//先设一个车最大值，以便后面更新
    public int getMinimumDifference(TreeNode root) {
        inorder(root);
        return ans;
    }
    public void inorder(TreeNode root){
        if(root==null) return;
        inorder(root.left);
        if(preNode != null){
            ans=Math.min(Math.abs(root.val-preNode.val),ans);
        }
        preNode=root;
        inorder(root.right);
    }
}
// @lc code=end

